use crate::sketchbook::ids::{LayoutId, UninterpretedFnId, VarId};
use crate::sketchbook::JsonSerde;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ChangeIdData {
pub original_id: String,
pub new_id: String,
#[serde(default)]
pub metadata: String,
}
impl<'de> JsonSerde<'de> for ChangeIdData {}
impl ChangeIdData {
pub fn new_with_metadata(original_id: &str, new_id: &str, metadata: &str) -> ChangeIdData {
ChangeIdData {
original_id: original_id.to_string(),
new_id: new_id.to_string(),
metadata: metadata.to_string(),
}
}
pub fn new(original_id: &str, new_id: &str) -> ChangeIdData {
Self::new_with_metadata(original_id, new_id, "")
}
pub fn from_var_id(original_id: &VarId, new_id: &VarId) -> ChangeIdData {
Self::new(original_id.as_str(), new_id.as_str())
}
pub fn from_layout_id(original_id: &LayoutId, new_id: &LayoutId) -> ChangeIdData {
Self::new(original_id.as_str(), new_id.as_str())
}
pub fn from_fn_id(original_id: &UninterpretedFnId, new_id: &UninterpretedFnId) -> ChangeIdData {
Self::new(original_id.as_str(), new_id.as_str())
}
}